/**
 * 一行N个格子，最左边两格分别有一个棋子，棋子有两种移动方式：
 * 1. 向右移动一格
 * 2. 跳棋，以右边的棋子为中心，左边的棋子跳到对称点
 * 所有移动都必须合法
 * 问最少几步将两个棋子移动到最靠右的两格
 * 打表，发现规律，从2开始：
 * 0 1 2 3
 * 4 4 5 5 6 6 7 7
 * 8 8 8 9 9 9 10 10 10 11 11 11
 * ...
 * 即第一波有4个，第二波有8个，第三波有12个，第四波有16个，……
 * 一次性求出所有，直接输出
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>

using Real = long double;
using llt = long long;
using vi = vector<int>;

llt const MOD = 998244353LL;


vector<llt> D(200001, 0);

void init(){
    int k = 2;
    int t = 0;
    int c = 1;
    while(1){
        for(int i=0;i<4;++i){
            fill(D.begin() + k, D.begin() + k + c, t++);
            k += c;
        }
        ++c;
        if(k > 100000) break;
    }    
    return;
}

int N;

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    init();
    int nofakse = 1;
    // cin >> nofakse;
    while(nofakse--){
        cin >> N;
        cout << D[N] << endl;
    }
    return 0;
}